Wait for ADB connection before communicating with emulator#125
Merged
Conversation
387f876 to
2063fbd
Compare
2063fbd to
e7b47af
Compare
tmgsca
approved these changes
Mar 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this change accomplish?
This change fixes an issue where Tophat sometimes displayed an error message when booting Android emulators due to a hardcoded sleep and unreliable AVD property querying that was previously used when waiting for an emulator to connect to ADB.
How have you achieved it?
By using
emulator's-report-consoleto connect to a TCP socket that reports the port of the emulator on ADB before sending requests to ADB for that serial (then usingwait-for-deviceto wait for boot). With a known port and serial, we can also rely on this value rather than querying for AVD properties which may still not be populated right after boot has completed.How can the change be tested?
Boot a few Android emulators (using "Start" or by installing apps) a few times, both in isolation and in parallel and ensure emulators boot reliably (from warm and cold state).